SMB Enumeration
smbclient
smbclient -L \\\\<target>\\ # list shares, NULL session
smbclient -L <target-IP> -U username%password # list shares, authenticated
smbclient //<target>/<share$> -U username%password # connect to share
smbclient //<target>/<share$> -c 'ls' password -U username
smbclient //<target>/<share$> -c 'cd folder; ls' password -U username
smbclient //<target>/<share$> -c 'cd folder;get desired_file_name' password -U username
smbclient //<target>/<share$> -c 'put /local/file.txt .\target_folder\target_file.txt' password -U username
smbclient //<target>/<share$> -c 'mkdir .\target_folder\new_folder' password -U username
smbclient //<target>/<share$> -c 'rename current_file.txt new_file.txt' password -U username
enum4linux
enum4linux -a <target> # general, anonymous
enum4linux -a <target> -u <user> -p <pass> # general, authenticated
enum4linux -u <user> -p <pass> -U <target> # users
enum4linux -u <user> -p <pass> -G <target> # groups + members
enum4linux -u <user> -p <pass> -P <target> # password policy
Nmap SMB Scripts
# Enum users
nmap -p 445 --script smb-enum-users <target> --script-args smbuser=username,smbpass=password,smbdomain=domain
nmap -p 445 --script smb-enum-users <target> --script-args smbuser=username,smbhash=LM:NTLM,smbdomain=domain
# Enum groups
nmap -p 445 --script smb-enum-groups <target> --script-args smbuser=username,smbpass=password,smbdomain=domain
# Enum shares
nmap -p 445 --script smb-enum-shares <target> --script-args smbuser=username,smbpass=password,smbdomain=domain
# OS discovery
nmap -p 445 --script smb-os-discovery <target>
# Vuln checks
nmap -p 445 --script smb-vuln-ms06-025 <target>
nmap -p 445 --script smb-vuln-ms07-029 <target>
nmap -p 445 --script smb-vuln-ms08-067 <target>
nmap -p 445 --script smb-vuln-ms10-054 <target>
nmap -p 445 --script smb-vuln-ms10-061 <target>
nmap -p 445 --script smb-vuln-ms17-010 <target>
nmap -p 445 --script smb-vuln-cve-2017-7494 <target>
# Check nmap.org/nsedoc/scripts/ for updated list
# Brute force (mind account lockout!)
nmap -p 445 --script smb-brute --script-args userdb=user-list.txt,passdb=pass-list.txt <target>
Source reference: sharingsec.blogspot.com